#!/usr/bin/env node

/**

Usage:
./scripts/less-watch [watchPath]

Example:
./scripts/less-watch ./notebook/static/notebook/less

**/

var less = require('less');
var fs = require('fs');
var path = require('path');
var child_process = require('child_process');

function printResults(err, stdout, stderr) {
  if (err) return console.log(err);
  if (stdout) console.log(stdout);
  if (stderr) console.log(stderr);
}

function compileLESS() {
  child_process.exec('lessc --include-path=notebook/static --verbose notebook/static/style/style.less notebook/static/style/style.min.css', printResults);
  child_process.exec('lessc --include-path=notebook/static --verbose notebook/static/style/ipython.less notebook/static/style/ipython.min.css', printResults);
}

function watchDir(dir) {
  var rootPath = path.join(__dirname, '..');
  var watchPath = path.resolve(dir);
  console.log('less-watch:', 'watching:', path.relative(rootPath, watchPath));
  fs.watch(watchPath, {recursive: true}, function(event, file) {
    if (file && /.+\.less$/.test(file)) {
      console.log('less-watch:', 'modified:', file);
      compileLESS();
    }
  });
}

compileLESS();
watchDir(process.argv[2]);
